package day1;

public class Test1 {
    /*
    6.自定义一个方法，判断java中两个值是否相等？包含以下功能
       (1)基本数据类型
       (2)引用数据类型 使用instanceof关键字
    */
    public static boolean isEqual(Object a, Object b) {
        // 处理两个对象都为null的情况
        if (a == null && b == null) {
            return true;
        }

        // 处理其中一个为null的情况
        if (a == null || b == null) {
            return false;
        }
        if (a instanceof Integer) {
            return (Integer) a == (Integer) b;
        }
        if (a instanceof Double) {
            return (Double) a == (Double) b;
        }
        if (a instanceof Float) {
            return (Float) a == (Float) b;
        }
        if (a instanceof Long) {
            return (Long) a == (Long) b;
        }
        if (a instanceof Short) {
            return (Short) a == (Short) b;
        }
        if (a instanceof Byte) {
            return (Byte) a == (Byte) b;
        }
        if (a instanceof Character) {
            return (Character) a == (Character) b;
        }
        if (a instanceof Boolean) {
            return (Boolean) a == (Boolean) b;
        }

        // 处理引用数据类型
        // 先检查类型是否兼容
        if (!(a.getClass().isInstance(b))) {
            return false;
        }
        // 使用equals()方法比较引用类型
        return a.equals(b);
    }

    public static void main(String[] args) {
        //测试基本数据类型
        System.out.println(isEqual(10, 20));
        //测试引用数据类型
        String s1 = "hello";
        String s2 = "hello";
        System.out.println(isEqual(s1, s2));
    }
}
